package normalArray;

import java.util.Arrays;

public class rotate {
    // 法一：定义额外的数组
    public static void rotate1(int[] nums, int k) {
        // 要mod，因为k可能大于nums.length
        int[] arr=new int[nums.length];
        int index=0;
        for(int i=0;i<nums.length;i++){
            index=(i+k)%nums.length;
            arr[index]=nums[i];
        }
        for(int i=0;i<nums.length;i++){
            nums[i]=arr[i];
        }
    }
    // 法二：翻转数组
    public static void rotate2(int[] nums, int k) {
        // 取模
        k%=nums.length;
        reverse(nums,0,nums.length-1);
        reverse(nums,0,k-1);
        reverse(nums,k,nums.length-1);
    
    }
    public static int[] reverse(int[] nums,int start,int end){
        
        while (start<=end) {
            int temp=nums[start];
            nums[start]=nums[end];
            nums[end]=temp;
            start++;
            end--;
        }
        return nums;
    }
    public static void main(String[] args) {
        int[] nums = new int[] { 1, 2, 3, 4, 5, 6, 7 };
        // int[] nums = new int[] { -1,-100,3,99 };
        rotate2(nums, 3);
    }
}
